The problem of acquiring video data into computer system memory (i.e. the main memory of a computer system) is increasingly the subject of attention in the field of image/video processing. As the performance of software image processing increases in response to improvements in CPU capacity, it is increasingly necessary to provide for fast and efficient acquisition of video frames from video source devices. Typical video sources include industrial cameras, camcorders, video cameras, VCRs, TV tuners, and laserdisk players.
Typically, a host computer system employs a video acquisition board to perform video frame acquisition. A video acquisition board is generally equipped with (a) an analog video port for coupling to an analog video source, (b) an A/D converter, (c) a frame acquisition buffer [RAM], (d) a bus connection to the host system, and (e) a DMA controller. In addition, a video board is often equipped with a digital video port for coupling to a digital video source.
An analog video source provides an analog video signal to the video board via the analog video port. The analog video signal is organized as a stream of video flames with a typical rate of 30 frames per second. The video board employs the A/D converter to digitize the analog video signal in response to synchronization information embedded in the analog video signal. The resulting digitized frame samples are temporarily stored in the frame acquisition buffer and then transferred to system memory.
A digital video source (e.g. a digital camera) provides a digital video signal to the video board via the digital video port. Since the digital video signal already comprises a stream of digitized video frames, the A/D converter (of the video board) is bypassed and frame data is stored directly into the frame acquisition buffer.
The frame acquisition buffer is generally large enough to prevent overrun of data as video data is received, stored, and transmitted to system memory. In some video acquisition boards, the frame acquisition buffer comprises only enough memory sufficient for buffering purposes, such as several Kilobytes. In other types of video acquisition boards, the frame acquisition buffer comprises enough storage for one or more digitized video frames. In these boards, the firame acquisition buffer is generally large enough to store several video frames in order to provide buffering of the bus connection to the host system.
In prior art acquisition systems, the host CPU controls the off-loading of the frame data from the frame acquisition buffer to the system memory. Accordingly, the host CPU must monitor the status of the frame acquisition buffer to determine which memory segments of the frame acquisition buffer contain newly acquired video frames. The host CPU must then command a DMA controller on the video acquisition board (or on the host) to transfer these memory segments to main memory, or must perform the transfer itself. The time consumed by the host CPU to perform this control task is time which detracts from other CPU processing tasks. For example, it is very likely that an image processing task such as feature detection, tracking, correlation, etc. is being performed on the video frame data that is being acquired. In addition, the CPU is often burdened with other tasks or processes.
Furthermore, it is very often the case that several peripheral devices share the bus which connects the video acquisition board to the host system. In this case the video acquisition board must compete with other peripherals for bus access to transfer data to the system memory. Also, the host system must compete with the video acquisition board as well as other peripherals devices for bus access in order to monitor and control the video acquisition board. Thus, in performing the monitor and control task, the CPU consumes valuable time, and also unnecessarily increases bus traffic.
It is obviously not efficient for the host CPU to be occupied with controlling the low-level task of data transfer while other time-intensive processing tasks await to be performed. Thus a system and method is desired whereby the acquisition of frame data into system memory can be controlled from within the video acquisition board, with minimal intervention by the host CPU. Such a system would liberate the host CPU to devote itself to higher-level processing tasks, and would also reduce bus traffic.